In today's highly interconnected world, the process of adding a device to a network (herein referred to as “provisioning”) in a secure manner invariably involves a relatively large amount of user interaction. Normally, a user has to manipulate an interface on the device in order to configure it to join the network. It is often through the device's own interface that the user provides information as to which network the device should join, what type of security protocol to use, etc.
Consider, for instance, the addition of a computer to a WiFi network. To configure the computer, a user provides the computer with information regarding the Service Set Identification (SSID) or “name” of the network, as well as any other authentication information needed. Similarly, when adding an automation device (e.g., a sensor, controller, etc.) to an X10 network, the user sets an “address” for the device, so that the network may manage it correctly. In both provisioning scenarios, the efforts involved in the authentication and configuration of the device rest on the shoulders of the end-user, who must have a sophisticated understanding of the network and its operation.